package donnees;

import groupe._Groupe;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.HashMap;

import Box.$BoiteDeReception;
import user.Auth;


public interface _Serialisation  {
	
	
/**
 * sauvegarde les donnees de l'utilisateur dans la base 
 * 
 * @param u utilisateur 
 * @throws RemoteException
 */
public void saveUser(Auth a,int id);



/**
 * fournit l'utilisateur grace � son identifiant
 * 
 * @return un utilisateur
 * @throws RemoteException
 */
public Auth loadUser(int id) ;

/**
 * @param id identifiant utilisateur
 * @return le mot de passe 
 */
public String loadMotDePasse(int id);

/**
 * @param id identifiant utilisateur
 * @return le login de l'utilisateur
 */
public String loadLogin(int id);

/**
 * sauvegarde les donnees relatives au groupe dans la base 
 * 
 * @param g groupe
 * @throws RemoteException
 */
public void saveGroupe(_Groupe g);



/**
 * fournit le groupe grace au nom u groupe
 * 
 * @return un groupe
 * @throws RemoteException
 */
public _Groupe loadGroupe(String nomGroupe);



/**
 * enregistre l'identifiant de l'utilisateur dans la liste des identifiants de tous les utilisateurs 
 * 
 * @throws RemoteException
 */
public void enregistrerIdUser(int id) ;



/**
 * enregistre le nom du groupe dans la liste des noms de tous les groupes
 * 
 * @throws RemoteException
 */
public void enregistrerNomGroupe(String nomGroupe);


/**
 * r�cup�re la liste des identifiants de tous les utilisateurs 
 * 
 * @throws RemoteException
 */
public void recupererIDUsers() throws FileNotFoundException, IOException;



/**
 * r�cup�re la liste des noms de tous les groupes
 * 
 * @throws RemoteException
 */
public void recupererNomsGroupes() throws FileNotFoundException, IOException;

/**
 * fournit la liste de tous les Users
 * 
 * @return la liste de tous les Users
 * @throws RemoteException
 */
public HashMap<Integer,Auth> getTousLesUsers();


/**
 * fournit l'ensemble des groupes
 * 
 * @return la liste de tous les groupes
 * @throws RemoteException
 */
public HashMap<String,_Groupe> getTousLesGroupes();


/**
 * @return the listeIdUsers
 */
public ArrayList<Integer> getListeIdUsers();

/**
 * @param listeIdUsers the listeIdUsers to set
 */
public void setListeIdUsers(ArrayList<Integer> listeIdUsers);

/**
 * @return the listeNomsGroupes
 */
public ArrayList<String> getListeNomsGroupes() ;

/**
 * @param listeNomsGroupes the listeNomsGroupes to set
 */
public void setListeNomsGroupes(ArrayList<String> listeNomsGroupes) ;

/**
 * sauvegarde l'ensemble des utilisateurs dans la base
 * @param lUsers
 * @throws RemoteException 
 */	
public void saveListeUsers(HashMap<Integer,Auth> lUsers) ;

/**
 * sauvegarde l'ensemble des groupes dans la base
 * @param lGroupes
 * @throws RemoteException
 */
public void saveListeGroupes(HashMap<String, _Groupe> lGroupes);

/**
 * sauvegarde l'ensemble de la liste d'identifiants des utilisateurs dans la base
 * @param listeIdUsers
 * @throws RemoteException
 */
public void saveListeIdUsers(ArrayList<Integer> listeIdUsers) ;

/** 
 * sauvegarde l'ensemble de la liste d'identifiants des utilisateurs dans la base
 * @param listeIdUsers
 * @throws RemoteException
 */
public void saveListeNomsGroupes(ArrayList<String> listeNomsGroupes) ;


/**
 * supprime un utilisateur de la base
 * @param id
 */
public void retirerUser(int id) ;

/**
 * supprime un groupe de la base
 * @param nomG
 */
public void retirerGroupe(String nomG);

/**
 * permet la sauvegarde de la boite de reception de l'utilisateur
 * @param idUser identifiant utilisateur
 * @param BR la boite de reception de l'utilisateur
 * @throws FileNotFoundException
 * @throws IOException
 */
public void saveBoiteDeReception(int idUser,$BoiteDeReception BR) throws FileNotFoundException, IOException;

/**
 * prmet le chargement de la boite de reception de l'utilisateur
 * @param idUser identifiant utilisateur
 * @return la boite de reception de l'utilisateur
 * @throws FileNotFoundException
 * @throws IOException
 */
public $BoiteDeReception loadBoiteDeReception(int idUser) throws FileNotFoundException, IOException;


}
